<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
    
// 基本包装类型
// Number String Boolean 是基本类型，也叫基本包装类型
// 在需要时，会被包装成对应的对象类型
// String.prototype.charAt = function (){}

var str = 'hello';
var res = str.charAt(1);
console.log( res );// 'e'

// 包装过程：
// var _str = new String('hello');
// var res = _str.charAt(1);
// _str = null; 销毁临时创建的对象


// 请详细说明 a.b 可能发生哪些情况？
// 1.如果a是number string Boolean {} [] function时，a.b返回属性b的值或undefined
// 2.如果a是null或undefined时，a.b会报类型错误
// 3.如果a未定义，a.b会报引用错误

// console.log( a.b );


// var a;
// console.log( a.b );// 报类型错误


/* var a = 1;

a.b = 123;

// 以上代码执行时，在后台完成如下工作：
// var _a = new Number(1);
// _a.b = 123;
// _a = null; 销毁临时创建的对象

console.log( a.b );// undefined

// var _a = new Number(1);
// console.log( _a.b );// undefined
// _a = null; 销毁临时创建的对象 */

</script>
</body>
</html>